package com.lancoo.ccas52.pojo.dto;

import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName ArrangeTeachingClassDto
 * @Description 排课所需教学班数据
 * @Author quin
 * @Date 2023/3/27 16:57
 */
@Data
public class ArrangeTeachingClassDto implements Serializable {

    /**教学班id*/
    private Long teachingClassId;
    /**教学班名称*/
    private String teachingClassName;
    /**教学班类型 0:无需选课 1:在线选课 2:分级教学 3:预选教学班*/
    private Integer teachingClassType;
    /**1课程  2环节*/
    private Integer flag;
    /**选课人数*/
    private Integer classNum;
    /**教学班人数*/
    private Integer studentNumber;
    /**授课类型 0:环节 1讲授 2实验 3上机 4其他 */
    private Integer hourType;
    /**周课时数量*/
    private Integer weekNum;
    /**上课周次(二进制)*/
    private String week;
    /**教师id(逗号分割)*/
    private String teacherIds;
    /**教师名称(逗号分割)*/
    private String teacherNames;
    /**课程id*/
    private Long courseId;
    /**课程名称*/
    private String courseName;
    /**所需教室类型*/
    private Integer roomType;
    /**连上节次*/
    private Integer connectSection;

    /**连上次数*/
    private Integer connectNumber;
    /**指定教室id,多个逗号分割 null表示随机分配*/
    private Long roomId;
    /**拆班学生分配 1单数 2双数*/
    private Integer isSingle;
    /**分班标识 UUID生成 相同分组的教学班，标识相同，排课时需要分配相同课时的教学班*/
    private String uniqueShiftSign;
    /**行政班id*/
    private String toClass;
    /**教学班所属校区的id*/
    private String campusId;
    /**校区名称*/
    private String campusName;
    /**学生id字符串（逗号分隔）*/
    private String studentIds;
//    /**开课单位id-所属教学计划学院id*/
//    private String collegeId;
//    /**年级id*/
//    private String gradeId;
//    /**专业id*/
//    private String majorId;
    /**修读性质：1主修2辅修*/
    private Integer studyNature;

    /**专业性质，1:公共课，2:专业课*/
    private Integer majorProp;
    /**课程性质(环节教学班没有该属性） 1必修  2选修**/
    private Integer courseNature;
    /**课程环节开课单位*/
    private String courseCollegeId;
    /**教学班禁排课课时，多个以逗号分隔**/
    private String prohibitTimeslotCodes = "";
    //尽量排的课时，主要用于尽量排规则中，处理指定教学班的教室课时分组信息
    //存储规则，0101、0301分别代表周一第1节、周三第1节
    private List<String> fixTimeslotCodes = new ArrayList<>();

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }

        if (getClass() != obj.getClass()) {
            return false;
        }

        boolean bRet = false;
        ArrangeTeachingClassDto teachingClass = (ArrangeTeachingClassDto) obj;
        if (this.teachingClassId.equals(teachingClass.getTeachingClassId())
        && this.hourType.equals(teachingClass.getHourType())) {
            bRet = true;
        }

        return bRet;
    }
}
